JSON Web Tokens (JWT) এবং Cookies ব্যবহার

Computer Programming - নোড জেএস (Node.js) - Authentication এবং Authorization (অথেনটিকেশন এবং অথরাইজেশন)
231

JSON Web Tokens (JWT) এবং Cookies হল দুটি জনপ্রিয় প্রযুক্তি যা আধুনিক ওয়েব অ্যাপ্লিকেশনগুলোতে অথেনটিকেশন এবং অথোরাইজেশন পরিচালনা করতে ব্যবহৃত হয়। JWT ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে নিরাপদ তথ্য বিনিময় করা যায়, এবং Cookies ব্যবহৃত হয় সেশন সংরক্ষণ এবং স্টোর করার জন্য।

এই দুটি প্রযুক্তি সাধারণত লগইন সিস্টেমের অংশ হিসেবে ব্যবহৃত হয়, যেখানে JWT ব্যবহার করে ইউজারের অথেনটিকেশন টোকেন তৈরি করা হয় এবং Cookies এর মাধ্যমে সেটি সংরক্ষিত থাকে।


১. JSON Web Tokens (JWT)

JWT হল একটি ওপেন স্ট্যান্ডার্ড (RFC 7519) যা দুটি পক্ষের মধ্যে নিরাপদভাবে তথ্য স্থানান্তরের জন্য ডিজাইন করা হয়েছে। এটি সাধারণত Authorization (অথেনটিকেশন) এবং Information Exchange এর জন্য ব্যবহৃত হয়। JWT তে তিনটি অংশ থাকে:

  1. Header: টোকেনের ধরন (যেমন, JWT) এবং সাইনিং অ্যালগরিদম (যেমন, HMAC SHA256 বা RSA)।
  2. Payload: তথ্য বা Claims যা ইউজারের সম্পর্কিত তথ্য ধারণ করে (যেমন, ইউজার আইডি, রোল ইত্যাদি)।
  3. Signature: টোকেনের সুরক্ষা নিশ্চিত করতে সাইনিং অ্যালগরিদমের মাধ্যমে তৈরি করা হয়।

JWT তৈরি করা (Node.js Example)

  1. jsonwebtoken প্যাকেজ ইনস্টল করা:
npm install jsonwebtoken
  1. JWT তৈরি করা:
const jwt = require('jsonwebtoken');

// ইউজারের জন্য JWT তৈরি
const user = { id: 1, username: 'JohnDoe' };
const secretKey = 'your-secret-key';

// JWT তৈরি করা
const token = jwt.sign(user, secretKey, { expiresIn: '1h' });  // 1 ঘন্টার জন্য টোকেনটি মেয়াদী হবে

console.log('JWT Token:', token);

Output:

JWT Token: <YourGeneratedTokenHere>

এখানে, jwt.sign() মেথডের মাধ্যমে একটি JWT টোকেন তৈরি করা হয়েছে যা user ডেটা এবং secretKey ব্যবহার করে সাইন করা হয়েছে।

JWT Verify করা (Node.js Example)

// JWT যাচাই করা
jwt.verify(token, secretKey, (err, decoded) => {
  if (err) {
    console.log('Token is invalid or expired');
  } else {
    console.log('Decoded Token:', decoded);  // decoded ইউজারের তথ্য দেখাবে
  }
});

এখানে, jwt.verify() মেথড ব্যবহার করে টোকেনটি যাচাই করা হয়, এবং যদি এটি সঠিক থাকে, তবে ডিকোড করা তথ্য পাওয়া যাবে।


২. Cookies ব্যবহার

Cookies হল ক্লায়েন্ট-সাইডে (ব্রাউজারে) ছোট তথ্যের অংশ যা সার্ভার থেকে পাঠানো হয় এবং পরবর্তীতে সেই একই সার্ভারে পাঠানো হয়। Cookies ব্যবহার করে আপনি ইউজারের সেশন বা অন্যান্য ডেটা সংরক্ষণ করতে পারেন।

Cookies তৈরি করা (Node.js Example)

Express.js ব্যবহার করে Cookies সেট করা এবং পাঠানো সহজ। এখানে একটি সাধারণ উদাহরণ দেওয়া হলো যেখানে JWT টোকেন Cookies এ সংরক্ষণ করা হয়।

  1. cookie-parser প্যাকেজ ইনস্টল করা:
npm install cookie-parser
  1. Cookies সেট করা:
const express = require('express');
const cookieParser = require('cookie-parser');
const jwt = require('jsonwebtoken');
const app = express();

// Middleware for cookie parsing
app.use(cookieParser());

// Login route where JWT token is created and set as cookie
app.post('/login', (req, res) => {
  const user = { id: 1, username: 'JohnDoe' };
  const secretKey = 'your-secret-key';

  // JWT token creation
  const token = jwt.sign(user, secretKey, { expiresIn: '1h' });

  // Set JWT token as cookie
  res.cookie('token', token, { httpOnly: true, secure: true, maxAge: 3600000 }); // 1 hour

  res.send('Logged in and token saved as cookie');
});

// Route to access protected data
app.get('/profile', (req, res) => {
  const token = req.cookies.token;

  if (!token) {
    return res.status(403).send('Access Denied');
  }

  jwt.verify(token, 'your-secret-key', (err, decoded) => {
    if (err) {
      return res.status(401).send('Invalid Token');
    }

    res.json({ userId: decoded.id, username: decoded.username });
  });
});

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

Output:

  • POST /login: ইউজারের লগইন হলে JWT টোকেন Cookies এ সংরক্ষিত হবে।
  • GET /profile: যদি Cookies-এ JWT টোকেন থাকে, তাহলে সেই টোকেনের মাধ্যমে প্রোফাইল ডেটা ফেরত দেওয়া হবে।

এখানে, res.cookie() মেথড ব্যবহার করে JWT টোকেন Cookies-এ সংরক্ষণ করা হয়েছে। টোকেনটি httpOnly এবং secure হিসাবে সেট করা হয়েছে, যাতে শুধুমাত্র সার্ভার থেকে অ্যাক্সেস করা যায় এবং HTTPS প্রোটোকল ব্যবহার করার সময় এটি সুরক্ষিত থাকে।


৩. JWT এবং Cookies এর সাথে সেশন পরিচালনা

JWT এবং Cookies একসাথে ব্যবহার করে ইউজারের সেশন পরিচালনা করা যায়। সাধারণত, JWT টোকেন Cookies-এ সংরক্ষিত থাকে এবং ইউজারকে লগইন করে রাখা হয় যতক্ষণ না টোকেনের মেয়াদ শেষ হয়।

  1. JWT টোকেন Cookies-এ সংরক্ষণ: লগইন হওয়ার পর JWT টোকেন Cookies-এ সংরক্ষণ করা হয়, যাতে ইউজার পরবর্তী রিকোয়েস্টে এই টোকেন ব্যবহার করে অথেনটিকেট হতে পারে।
  2. টোকেন যাচাই করা: ইউজারের প্রাইভেট রুটে প্রবেশ করার জন্য সেশন যাচাইয়ের জন্য jwt.verify() ব্যবহার করা হয়।
  3. সেশন টাইমআউট বা লগআউট: JWT টোকেনের মেয়াদ শেষ হলে ইউজারকে পুনরায় লগইন করতে বলা হয়।

সারাংশ

  • JWT হল একটি নিরাপদ উপায় যা ব্যবহারকারীর তথ্য সুরক্ষিত রাখতে এবং অথেনটিকেশন করার জন্য ব্যবহৃত হয়। এটি ক্লায়েন্ট এবং সার্ভারের মধ্যে নিরাপদ তথ্য বিনিময়ের জন্য ব্যবহৃত হয়।
  • Cookies হল ক্লায়েন্ট-সাইডে ছোট ডেটা স্টোর করার জন্য ব্যবহৃত হয়, যা ইউজারের সেশন ট্র্যাকিং এবং ডেটা সংরক্ষণের জন্য উপযুক্ত।
  • Express.js-এ JWT টোকেন Cookies-এ সংরক্ষণ করে এবং সেশন পরিচালনার জন্য JWT ব্যবহৃত হয়, যার মাধ্যমে ব্যবহারকারীর লগইন সেশন এবং অথেনটিকেশন নিরাপদ রাখা যায়।

এগুলি একটি ওয়েব অ্যাপ্লিকেশন তৈরি করার ক্ষেত্রে ইউজারের অথেনটিকেশন এবং অথোরাইজেশন সিস্টেমকে সুরক্ষিত এবং কার্যকরী করে তোলে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...